#include <bits/stdc++.h>

using namespace std;

typedef double db;

const int MAXN = 3e6+50;
const db Pi = acos(-1);

struct Comp{
	db x,y;
	Comp(db _x = 0.0,db _y = 0.0):x(_x),y(_y){}
	friend Comp operator + (Comp a,Comp b){return Comp(a.x+b.x,a.y+b.y);}
	friend Comp operator - (Comp a,Comp b){return Comp(a.x-b.x,a.y-b.y);}
	friend Comp operator * (Comp a,Comp b){return Comp(a.x*b.x - a.y * b.y,a.x*b.y + a.y*b.x);}
};

Comp f1[MAXN],f2[MAXN];
int len,len1,len2,ans[MAXN],rev[MAXN];char a[MAXN],b[MAXN];

void change(Comp *f,int len){
	for(int i = 0;i < len;i++) {
		rev[i] = rev[i>>1]>>1;
		if(i & 1) rev[i] |= len>>1;
	}
	for(int i = 0;i < len;i++) if(i < rev[i]) swap(f[i],f[rev[i]]);
}

void fft(Comp *f,int len,int on){
	change(f,len);
	for(int h = 2;h <= len;h <<= 1){
		Comp wn(cos(2*Pi/h),sin(on*2*Pi/h));
		for(int j = 0;j < len;j += h){
			Comp w(1,0);
			for(int k = j;k < j + h/2;k++){
				Comp u = f[k],v = f[k+h/2] * w;
				f[k] = u + v;
				f[k+h/2] = u-v;
				w = w * wn;
			}
		}
	}
	if(on == -1) for(int i = 0;i < len;i++) f[i].x /= len;
}
int main (){
	scanf("%s",a);scanf("%s",b); len1 = strlen(a),len2 = strlen(b);
	len = 1;while(len < len1*2 && len < len2*2) len <<= 1;
	for(int i = 0;i < len1;i++) f1[i] = Comp(a[len1-i-1]-'0',0);
	for(int i = 0;i < len2;i++) f2[i] = Comp(b[len2-i-1]-'0',0);
	fft(f1,len,1); fft(f2,len,1);
	for(int i = 0;i < len;i++) f1[i] = f1[i] * f2[i];
	fft(f1,len,-1);
	for(int i = 0;i < len;i++) ans[i] = int(f1[i].x+0.5);
	for(int i = 0;i < len;i++) if(ans[i] > 9) ans[i+1] += ans[i] / 10,ans[i] %= 10;
	len = len1+len2-1; while(!ans[len] && len > 0) len--;
	if(!len) putchar('0'); for(int i = len;i >= 0;i--) putchar('0'+ans[i]);return 0;
}
